package cn.cailin.day07.demo10Buffer;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/*
    java.io.BufferedOutputStream extends OutputStream
    BufferedOutputStream:字节缓冲输出流

    继承自父类的共性成员方法:
        -public void close():关闭此输出流并释放与此流相关联的任何系统资源。
        -public void flush():刷新此输出流并强制任何缓冲的输出字节被写出。
        -public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流。
        -public void abstract void write(int b):将指定的字节输出流。

    构造方法:
        BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流，以将数据写入指定的底层输出流。
        BufferedOutputStream(OutputStream out,int size) 创建一个新的缓冲输出流，以将具有指定缓冲区大小的数据写入指定的底层输出流。
        参数：
            OutputStream out:字节输出流
            我们可以传递FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区，提高FileOutputStream的写入效率
            int size:指定缓冲流内部缓冲区的大小，不指定默认
        使用步骤：
            1.创建FileOutputStream对象，构造方法中绑定要输出的目的地
            2.创建BufferedOutputStream对象，构造方法中传递FileOutStream对象，提高FileOutputStream对象效率
            3.使用BufferedOutputStream对象中的方法write，把数据写入到内部缓冲区中
            4.使用BufferedOutputStream对象中的方法flush，把内部缓冲区中的数据，刷新到文件中
            5.释放资源（会先调用flush方法刷新数据，第四部可以省略）

 */
public class Demo01BufferedOutputStream {
    public static void main(String[] args) throws IOException {

        //1.创建FileOutputStream对象，构造方法中绑定要输出的目的地
        FileOutputStream fos=new FileOutputStream("D:\\IDEA\\day05-code\\src\\cn\\cailin\\day07\\a.txt");
        //2.创建BufferedOutputStream对象，构造方法中传递FileOutStream对象，提高FileOutputStream对象效率
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        //3.使用BufferedOutputStream对象中的方法write，把数据写入到内部缓冲区中
        bos.write("我把数据写入到内部缓冲区中".getBytes(StandardCharsets.UTF_8));
        //4.使用BufferedOutputStream对象中的方法flush，把内部缓冲区中的数据，刷新到文件中
        bos.flush();
        //5.释放资源（会先调用flush方法刷新数据，第四部可以省略）
        bos.close();
    }

}
